import store from '@/store/index'
import router from '@/router/index'

// 导航守卫

router.beforeEach(async(to, from, next) => {
  // ...
  // 返回 false 以取消导航
  // 如果有token
  if (store.state.user.token) {
    // 有token的情况下去登录页就跳转到首页,因为用户可能以为浏览器后退键是回退，如果退到登录页就会体验感很差
    if (to.path === '/login') {
      next('/')
    } else {
      if (!store.state.user.userInfo.id) {
        await store.dispatch('user/getUserInfo')
        const route = await store.dispatch('permission/filterList', store.state.user.userInfo.data.menus)
        console.log(19, store.state.user.userInfo.data.menus, route)
        router.addRoutes([...route, { path: '*', redirect: '/404', hidden: true }])
        // 把404和动态路由一起合并添加
        next(to.path)
      }
      next()
    }
    // 如果没token
  } else {
    // 创建一个白名单
    const whiteList = ['/login', '/404']
    // 如果去的路径在白名单里面就直接放行，否则跳到登陆页面
    if (whiteList.indexOf(to.path) !== -1) {
      next()
    } else {
      next('login')
    }
  }

  return false
})
